package map;
import java.util.HashMap;
import java.util.Map;
/**
 * Map接口:
 * 1.所有双列集合的顶级接口，规则了所有双列集合的共有功能
 * 2.Map体现的结果是一个多行两列的表格，其中左列称为key键，右列称为value值
 *   Map总是成对保存数据，每一对称为一个"Entry"条目，并且总是根据key获取对应的value
 * 3.Map要求:key不允许重复，但value可以重复--重复与否的判断依据为equals()+hashCode()
 * 4.常用实现类:
 *   1)HashMap:不重复、无下标、无序(存取顺序不一致)
 *   2)LinkedHashMap:不重复、无下标、有序(基于存储/访问顺序有序)
 */
public class MapDemo1 {
    public static void main(String[] args) {
        Map<String, Integer> map= new HashMap<>();
        /*
          put(K k,V v):向map中添加一组键值对
          Map要求key不能重复，如果使用重复的key存入value时实际是做替换value的操作
          同时将被替换的value通过返回值返回了
          如果是第一次存入，则返回值为null
         */
        map.put("语文",95);
        map.put("数学",100);
        map.put("英语",80);
        map.put("物理",86);
        map.put("化学",90);
        System.out.println(map);//{物理=86, 数学=100, 化学=90, 语文=95, 英语=80}

        map.put("物理",100);//将key物理对应的值替换为100-----常规操作
        System.out.println(map);//{物理=100, 数学=100, 化学=90, 语文=95, 英语=80}
        Integer value=map.put("物理",50);//将key物理对应的值替换为50，同时将100返回
        System.out.println(value);//100
        System.out.println(map);//{物理=50, 数学=100, 化学=90, 语文=95, 英语=80}

        value=map.put("政治",100);////若不是替换操作则返回null
        System.out.println(value);//null
        System.out.println(map);//{政治=100, 物理=50, 数学=100, 化学=90, 语文=95, 英语=80}


    }
}
